package cn.tedu.net.collection.file;

import java.io.File;
import java.math.BigDecimal;

//本类用来递归求文件夹总大小
public class Test3_FileSumRecursion {
    public static void main(String[] args) {
        //指定求哪个目录的总大小
        /*注意此处指定的路径必须是一个真实存在的文件夹
        * 如果文件夹不存在,会报错,如果传空文件夹,大小为0*/
        File f=new File("D:\\JetBrains");
        //调用size()求目录大小
        long total=size(f);
        //接收结果并打印
        BigDecimal a=new BigDecimal(total+"");
        BigDecimal b=new BigDecimal(1024*1024+"");
        BigDecimal c=a.divide(b,2,BigDecimal.ROUND_HALF_UP);
        System.out.println("文件夹的总大小为:"+c+"MB");
    }

      public static long size(File file){
        File[] f=file.listFiles();
        long sum=0;
          for (int i = 0; i < f.length; i++) {
              File fs=f[i];
              if(fs.isFile()){
                sum=sum+fs.length();
              }else if (fs.isDirectory()){
                sum=sum+size(fs);
              }
          }

        return sum;
}
}
